package game.actor
{
	import away3d.bounds.*;
	import away3d.containers.*;
	import engine.core.*;
	import engine.graphics.away3d.*;
	import engine.loaders.*;
	import engine.math.*;
	import flash.display.*;
	import flash.text.*;
	import game.*;
	
	public class RxBound
	{
		private var m_bound:RxVector4;
		private var m_boundRadius:Number;
		private var m_pos:RxVector4;
		private var m_offset:Number;
		private var m_actor:RxActor;
		private var m_extra:Object;
		private var m_useComputedBox:Boolean;
		private var m_debugSprite:Sprite = null;
		private var m_debugStats:TextField = null;
		private var m_debugParent:Sprite = null;
		private static var s_boundList:Array = new Array();
		private static var s_actor:RxActor;
		private static var s_extra:Object;
		
		public function RxBound(x:Number, y:Number, z:Number, vector:RxVector4, actor:RxActor, extra:Object)
		{
			this.m_bound = new RxVector4(x, y, -x, 0);
			this.m_boundRadius = this.m_bound.Magnitude3();
			this.m_pos = new RxVector4(vector.x, vector.y, vector.z, 1);
			this.m_offset = z;
			this.m_pos.y = this.m_pos.y - z;
			this.m_actor = actor;
			this.m_extra = extra;
			this.m_useComputedBox = false;
			s_boundList.push(this);
		}
		
		public static function GetNumBounds() : uint
		{
			return s_boundList.length;
		}
		
		public static function Update(param1:View3D, param2:Sprite) : void
		{
			/*
			var _loc_13:Number = NaN;
			var _loc_14:Number = NaN;
			var _loc_15:Number = NaN;
			var _loc_16:Number = NaN;
			var _loc_17:Number = NaN;
			var _loc_18:Number = NaN;
			var _loc_20:RxBound = null;
			var _loc_21:RxActor = null;
			var _loc_22:Number = NaN;
			var _loc_23:Number = NaN;
			var _loc_24:Number = NaN;
			var _loc_25:Number = NaN;
			var _loc_26:RxLoader3D = null;
			var _loc_27:AxisAlignedBoundingBox = null;
			var _loc_28:int = 0;
			var _loc_29:Number = NaN;
			var _loc_30:Number = NaN;
			var _loc_31:Number = NaN;
			var _loc_3:* = RxClientVars.GetInt("showBounds");
			var _loc_4:* = RxClientVars.GetInt("showStats");
			var _loc_5:* = RxMouse.pos.x;
			var _loc_6:* = RxMouse.pos.z;
			var _loc_7:* = RxVector4.PoolAlloc();
			var _loc_8:* = RxVector4.PoolAlloc();
			var _loc_9:* = RxCamera3D(param1.camera);
			var _loc_10:RxActor = null;
			var _loc_11:RxActor = null;
			var _loc_12:Object = null;
			var _loc_19:int = 0;
			while (_loc_19 < s_boundList.length)
			{
				
				_loc_20 = s_boundList[_loc_19];
				_loc_21 = _loc_20.m_actor;
				if (_loc_21 == null || _loc_21.IsAsleep() || !_loc_21.isVisible())
				{
					if (!(_loc_21 == null && _loc_20.m_extra != null))
					{
						;
					}
				}
				if (_loc_20.m_actor != null)
				{
					_loc_26 = _loc_20.m_actor.GetModel();
				}
				else
				{
					_loc_26 = null;
				}
				if (_loc_20.m_useComputedBox == true && _loc_26 != null)
				{
					_loc_27 = _loc_26.mesh.bounds as AxisAlignedBoundingBox;
					_loc_7.x = _loc_26.x;
					_loc_7.y = _loc_26.y;
					_loc_7.z = _loc_26.z;
					_loc_7.w = 1;
					_loc_9.TransformToViewport(_loc_7, _loc_7, 0, 0, param1.width, param1.height);
					_loc_22 = _loc_7.x;
					_loc_23 = _loc_7.x;
					_loc_24 = _loc_7.y;
					_loc_25 = _loc_7.y;
					_loc_28 = 0;
					while (_loc_28 < _loc_27.aabbPoints.length)
					{
						
						_loc_7.x = _loc_27.aabbPoints[_loc_28].x;
						_loc_7.y = _loc_27.aabbPoints[_loc_28].y;
						_loc_7.z = _loc_27.aabbPoints[_loc_28].z;
						_loc_7.w = 1;
						RxVector4.MulMatrix4x3W1(_loc_7, _loc_7, _loc_26.sceneTransform);
						_loc_9.TransformToViewport(_loc_7, _loc_7, 0, 0, param1.width, param1.height);
						if (_loc_7.x < _loc_22)
						{
							_loc_22 = _loc_7.x;
						}
						if (_loc_7.x > _loc_23)
						{
							_loc_23 = _loc_7.x;
						}
						if (_loc_7.y < _loc_24)
						{
							_loc_24 = _loc_7.y;
						}
						if (_loc_7.y > _loc_25)
						{
							_loc_25 = _loc_7.y;
						}
						_loc_28++;
					}
				}
				else
				{
					_loc_9.TransformToViewport(_loc_7, _loc_20.m_pos, 0, 0, param1.width, param1.height);
					RxVector4.Add(_loc_8, _loc_20.m_pos, _loc_20.m_bound);
					_loc_9.TransformToViewport(_loc_8, _loc_8, 0, 0, param1.width, param1.height);
					_loc_29 = (_loc_8.x - _loc_7.x) / 2;
					_loc_22 = _loc_7.x - _loc_29;
					_loc_23 = _loc_7.x + _loc_29;
					_loc_24 = _loc_8.y;
					_loc_25 = _loc_7.y;
				}
				if (_loc_21)
				{
					_loc_21.Set2DBounds(_loc_22, _loc_24, _loc_23 - _loc_22, _loc_25 - _loc_24);
				}
				if (_loc_3 == 1)
				{
					_loc_30 = _loc_23 - _loc_22;
					_loc_31 = _loc_25 - _loc_24;
					if (_loc_20.m_debugSprite == null)
					{
						_loc_20.m_debugParent = param2;
						_loc_20.m_debugSprite = new Sprite();
						_loc_20.m_debugSprite.graphics.beginFill(65280);
						_loc_20.m_debugSprite.graphics.drawRect(0, 0, _loc_30, _loc_31);
						_loc_20.m_debugSprite.alpha = 0.3;
						_loc_20.m_debugSprite.graphics.endFill();
						param2.addChild(_loc_20.m_debugSprite);
					}
					_loc_20.m_debugSprite.mouseEnabled = false;
					_loc_20.m_debugSprite.x = _loc_22;
					_loc_20.m_debugSprite.y = _loc_24;
					_loc_20.m_debugSprite.width = _loc_30;
					_loc_20.m_debugSprite.height = _loc_31;
				}
				if (_loc_4 == 1)
				{
					if (_loc_20.m_debugStats == null)
					{
						_loc_20.m_debugParent = param2;
						_loc_20.m_debugStats = new TextField();
						_loc_20.m_debugStats.textColor = 16776960;
						_loc_20.m_debugStats.scaleX = 1;
						_loc_20.m_debugStats.scaleY = 1;
						_loc_20.m_debugStats.background = true;
						_loc_20.m_debugStats.backgroundColor = 0;
						_loc_20.m_debugStats.alpha = 0.75;
						_loc_20.m_debugStats.autoSize = TextFieldAutoSize.LEFT;
						param2.addChild(_loc_20.m_debugStats);
					}
					_loc_20.m_debugStats.mouseEnabled = false;
					_loc_20.m_debugStats.x = (_loc_22 + _loc_23) / 2 - 50;
					_loc_20.m_debugStats.y = _loc_25;
					if (_loc_20.m_actor != null)
					{
						_loc_20.m_debugStats.text = _loc_20.m_actor.GetDebugText();
					}
					else
					{
						_loc_20.m_debugStats.text = "";
					}
				}
				if (RxMouse.GameWorldHasMouseFocus())
				{
					if (_loc_5 >= _loc_22)
					{
						if (_loc_5 <= _loc_23)
						{
							if (_loc_6 >= _loc_24)
							{
								if (_loc_6 <= _loc_25)
								{
									_loc_16 = (_loc_23 + _loc_22) / 2 - _loc_5;
									_loc_17 = (_loc_25 - _loc_24) * 0.25 + _loc_24 - _loc_6;
									_loc_18 = _loc_16 * _loc_16 + _loc_17 * _loc_17;
									if (_loc_20.m_actor != null)
									{
										if (_loc_20.m_actor.GetEntityType() == RxEntityType.ENTITY_TYPE_ITEM)
										{
											if (_loc_20.m_actor != null && (_loc_11 == null || _loc_18 < _loc_14))
											{
												_loc_11 = _loc_20.m_actor;
												_loc_14 = _loc_18;
											}
										}
										else if (_loc_20.m_actor != null && (_loc_10 == null || _loc_18 < _loc_13))
										{
											_loc_10 = _loc_20.m_actor;
											_loc_13 = _loc_18;
										}
									}
									if (_loc_20.m_extra != null && (_loc_12 == null || _loc_18 < _loc_15))
									{
										_loc_12 = _loc_20.m_extra;
										_loc_15 = _loc_18;
									}
								}
							}
						}
					}
				}
				_loc_19++;
			}
			if (_loc_11 != null)
			{
				s_actor = _loc_11;
			}
			else
			{
				s_actor = _loc_10;
			}
			s_extra = _loc_12;
			RxVector4.PoolFree(_loc_7);
			_loc_7 = null;
			RxVector4.PoolFree(_loc_8);
			_loc_8 = null;
			return;*/
		}
	}
}